#pragma once
#include <QString>
#include <QJsonArray>

class Command
{
public:
	enum class CmdTag : char
	{
		kNone,
		kHot,
		kNew
	};
	Command() = default;
	Command(int id, const QString& name, int baseCmd = 0);
	bool exec(const QString& paramters);
	bool exec();

	QString name() { return m_name; }
	void setName(const QString& n) { m_name = n; }
	bool isAuthed();
	void setAuthed(bool auth) { m_is_authed = auth; }
	
	QString  module() const { return m_module; }
	void setModule(const QString& v);
	QString abbr() const { return m_abbr; }
	void setAbbr(const QString& v) { m_abbr = v; }
	//void setCategory(const QString& v) { m_category = v; }
	void setTag(CmdTag tag) { m_tag = tag; }
	CmdTag tag() const { return m_tag; }
	void setParamters(const QString& ja) { m_paramers = ja; }
	QString paramters() { return m_paramers; }
	void setRedPoint(bool is_redpoint) { m_is_redpoint = is_redpoint; }
	bool isRedPoint() { return m_is_redpoint; }
	void commonPage(int id, int ntype);

	bool shouldHide() const { return m_hide; }
	void setHide(bool v) { m_hide = v; }

private:
	int	m_id = 0;
	int m_baseCmd = 0;
	QString m_name;
	QString m_module;
	QString	m_abbr;
	//QString m_category;
	CmdTag	m_tag = CmdTag::kNone;
	QString	m_paramers;
	bool	m_is_authed = true;//TODO
	bool	m_is_redpoint = false;
	bool	m_hide = false;
};